package com.vates.gestion.dao.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.vates.entidades.Tipo_Habitacion;
import com.vates.gestion.dao.BaseDAO;

@Repository(value = "Tipo_HabitacionDAO")
public class Tipo_HabitacionDAOImpl implements BaseDAO<Tipo_Habitacion> {

	private EntityManager em;

	@PersistenceContext
	public void setEntityManager(EntityManager em) {
		this.em = em;
	}

	@Override
	@Transactional(readOnly = false)
	public Tipo_Habitacion nuevo(Tipo_Habitacion entidad) {
		Tipo_Habitacion t = em.merge(entidad);
		System.out.println("Tipo Habitacion Creado");
		return t;
	}

	@Override
	@Transactional(readOnly = true)
	public Tipo_Habitacion buscarPorId(int id) {
		Tipo_Habitacion habitacion = em.find(Tipo_Habitacion.class, id);
		return habitacion;
	}

	@Override
	@Transactional(readOnly = true)
	@SuppressWarnings("unchecked")
	public List<Tipo_Habitacion> buscarTodos() {

		List<Tipo_Habitacion> results = em.createQuery(
				"SELECT p FROM Tipo_Habitacion p").getResultList();
		return results;
	}

	@Override
	@Transactional(readOnly = true)
	@SuppressWarnings("unchecked")
	public List<Tipo_Habitacion> buscarPorNombre(String nombre) {

		List<Tipo_Habitacion> listaHabitaciones = em
				.createQuery(
						"SELECT t FROM Tipo_Habitacion t WHERE :nombre LIKE t.nombre")
				.setParameter("nombre", nombre).getResultList();
		return listaHabitaciones;
	}

	@Override
	@Transactional(readOnly = false)
	public void eliminar(int id) {
		Tipo_Habitacion habitacion = em.find(Tipo_Habitacion.class, id);
		em.remove(habitacion);
		System.out.println("habitacion Eliminada");
	}

	@Override
	@Transactional(readOnly = false)
	public void modificar(Tipo_Habitacion entidad) {
		Tipo_Habitacion habitacion = new Tipo_Habitacion();
		if (entidad.getId_tipoHabitacion() != 0) {
			em.merge(habitacion);
		} else {
			em.persist(habitacion);
		}
	}
}
